#include "OptionTypeEnum.h"
using namespace inilib;


OptionTypeEnum::OptionTypeEnum (
	const std::string & optionName,
	const std::vector< std::string > & possibleValues,
	Mandatory isMandatory,
	ValuesAmount amount,
	const std::string & defaultValue,
	char separator
)
	: OptionType( optionName, isMandatory, amount, separator )
{
	m_DefaultValue.push_back( defaultValue );

	for ( size_t i = 0; i < possibleValues.size(); ++i )
	{
		m_PossibleValues.insert( possibleValues[ i ] );
	}
}


std::vector< std::string > OptionTypeEnum::GetDefaultValue () const
{
	return m_DefaultValue;
}


bool OptionTypeEnum::AreValuesValid_ ( const std::vector< std::string > & values ) const
{
	for ( size_t i = 0; i < values.size(); ++i )
	{
		auto iter = m_PossibleValues.find( values[ i ] );
		if ( iter == m_PossibleValues.end() )
		{
			return false;
		}
	}

	return true;
}
